/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.gob.foncodes.sega.bs.base.dao;
import java.io.Serializable;
import java.util.List;

/**
 * Interface BASE simple DAO que reemplaza a JpaDaoSupport que sale de
 * circulacion.
 * 
 * @author 
 * @version 2.0, 21/03/2012 06:28:21 PM
 * 
 *          /----------Nombre----------/----fecha----/-------------Motivo------
 *          --------/                    08/10/2013      06:28:21 PM CreacOn
 *          de la clase
 * 
 */
public interface DAO<T, PK extends Serializable> {

	void save(T paramT);
	void update(T paramT);
	void delete(T paramT);
	T findById(PK paramObject);
	List<T> find(String paramString);
	List<T> find(String paramString, Object[] paramArrayOfObject);
	List<T> findNaviteQuery(String paramString);
	List<T> findNaviteQuery(String paramString, Object[] paramArrayOfObject);
	T findUniqueResult(String paramString);
	T findUniqueResult(String paramString, Object[] paramArrayOfObject);
	List<T> findLimitedResult(String paramString, int paramInt1, int paramInt2);
	List<T> findLimitedResult(String paramString, int paramInt1, int paramInt2,
			Object[] paramArrayOfObject);
	Class<T> getDomainClass();
	void removeById(PK id);
	void remove(T paramT);
	Object findUniqueResultObject(String paramString,
			Object[] paramArrayOfObject);
	Object findUniqueResultObject(String paramString);
	Object findNaviteQueryObject(String paramString);
	Object findNaviteQueryObject(String paramString,Object[] paramArrayOfObject);
	List<Object[]> findNaviteQueryListObject(String paramString, Object[] paramArrayOfObject);
	List<Object[]> findNaviteQueryListObject(String paramString);	
	Object executeNaviteQueryObject(String paramString);
	Object executeNaviteQueryObject(String paramString,Object[] paramArrayOfObject);
}

